package view;

import controller.Controleur;
import java.awt.Color;
import java.awt.Dimension;
import javax.swing.*;
import javax.swing.border.Border;
import model.Model;
import observer.Observer;

/**
 * Classe representant la zone d'affichage du profil de l'utilisateur de l'application et la zone d'appel
 * @author Lefevre, Thoue
 */
public class PanelProfil extends JPanel implements Observer {

    private Controleur controleur;
    private JPanel panelProfil;
    private JPanel panelInvite;
    private JTextField appelIp;
    private JTextField appelPort;
    private JLabel buttonAppel;

    /**
     * Constructeur
     * @param controleur controleur de l'application
     */
    public PanelProfil(Controleur controleur) {
        this.controleur = controleur;
        setOpaque(false);
        Border border = BorderFactory.createLineBorder(Color.black);
        panelProfil = new JPanel();
        panelProfil.setOpaque(false);
        panelProfil.setPreferredSize(new Dimension(200, 70));
        panelProfil.setBorder(BorderFactory.createTitledBorder(border, "Votre profil"));
        this.add(panelProfil);

        panelInvite = new JPanel();
        panelInvite.setOpaque(false);
        panelInvite.setPreferredSize(new Dimension(300, 70));
        panelInvite.setBorder(BorderFactory.createTitledBorder(border, "Envoyer une invitation a"));
        appelIp = new JTextField(10);
        appelPort = new JTextField(4);
        buttonAppel = new JLabel(new ImageIcon(getClass().getResource("call.png")));
        buttonAppel.setPreferredSize(new Dimension(36, 36));
        buttonAppel.addMouseListener(new AppelListenner(controleur, this));
        panelInvite.add(buttonAppel, RIGHT_ALIGNMENT);
        panelInvite.add(appelIp);
        panelInvite.add(new JLabel(":"));
        panelInvite.add(appelPort);
        panelInvite.add(buttonAppel);
        this.add(panelInvite);
        validate();
    }

    /**
     * Getter du champs pour appeler une adresse ip
     * @return appelIP
     */
    public JTextField getAppelIp() {
        return appelIp;
    }

    /**
     * Getter du champs pour appeler un port
     * @return appelPort
     */
    public JTextField getAppelPort() {
        return appelPort;
    }

    /**
     * Getter du bouton appeler
     * @return le bouton appel
     */
    public JLabel getButtonAppel() {
        return buttonAppel;
    }

    /**
     * Methode de mise à jour de la vue
     * @param eaudio model a jour
     */
    @Override
    public void update(Model eaudio) {
        panelProfil.removeAll();
        panelProfil.add(new JLabel("Bienvenue " + eaudio.getCurrentUser().getNom() + " " + eaudio.getCurrentUser().getPrenom() + ","));
        panelProfil.add(new JLabel("Adresse : " + eaudio.getCurrentUser().getIp() + ":" + String.valueOf(eaudio.getCurrentUser().getPort())));
    }
}
